`
https://leetcode.cn/problems/lexicographical-numbers/
`

/**
 * @param {number} n
 * @return {number[]}
 */
var lexicalOrder = function (n) {
  let res = []

  // 把题目看成十叉树即可
  // 遍历 9 颗十叉树
  for (let i = 1; i <= 9; i++) {
    traverse(i)
  }

  function traverse(val) {
    // 如果当前值大于题目给的 n，则不需要生成
    if (val > n) return

    res.push(val)

    for (let i = val * 10; i <= val * 10 + 9; i++) {
      traverse(i)
    }
  }

  return res
};